# -*- coding:utf-8 -*-
# title           :
# description     :
# author          :Python超人/三月三提供
# date            :2024-06-01
# link            :https://gitcode.net/pythoncr/
# python_version  :3.9
# ==============================================================================


class 神笔模板:
    """
    注意：模板的文件命名后缀为“神笔模板”
    已支持的模板使用如下:
    1. 神笔.神笔模板("超级玛丽", 显示帽子=是)
    2. 神笔.神笔模板("圆形印章", 圆心点=(100, 100), 颜色=颜色.红色,
                     主文字="Python超人科技有限公司", 主文字字体=系统字体.华文新魏, 主文字间距=-0.5,
                     抬头文字="办公专用", 抬头文字字体=系统字体.华文新魏, 抬头文字大小=11, 抬头文字上下微调=-2, 抬头文字间距=-1,
                     副文字="93503454824", 副文字大小=9, 副文字间距=0
                     )
    3. 神笔.神笔模板("电视信号测试图", 中心位置=(self.宽 / 2, self.高 / 2), 圆半径=self.宽 / 2.4,
                          方格背景行列数=(26, 20), 方格背景填充色=背景填充色, 顶端标题="中央电视台")
    4. 神笔.神笔模板("水珠", 大小=水珠大小, 嵌入物体=嵌入物体)
    5. 神笔.神笔模板("太极图", 半径=100, 描边宽度=1, 描边颜色=颜色.红色, 阴颜色=颜色.红色, 阳颜色=颜色.白色).创造元素(x=100, y=100)
    6. 神笔.神笔模板("手机屏幕", 宽=宽, 高=高).创造元素().平移(左右边距 + 描边宽度 / 2, 上边距)
    7. 神笔.神笔模板("手机外壳", 左右边距=左右边距, 上边距=上边距, 下边距=下边距, 描边宽度=描边宽度, 手机颜色=手机颜色)
    """
    def __init__(self, 绘图板):
        from 神笔码靓.神笔库 import 神笔绘图板
        self.绘图板: 神笔绘图板 = 绘图板
        self.返回值 = {}
        self._模板参数名 = []
        self._模板未用参数名 = []

    def 初始化(self):
        pass

    def 模板创建前(self):
        pass

    def 模板创建后(self, 模板元素对象):
        pass

    def 模板ID(self):
        pass

    def 模板参数(self, **kwargs):
        self.参数 = kwargs

    def id_(self):
        return self.获取参数("id_", None)


    def 设置返回值(self, 名称, 值):
        self.返回值[名称] = 值

    def 获取参数(self, 参数名, 默认值=None):
        if 参数名 not in self._模板参数名:
            self._模板参数名.append(参数名)
        if 参数名 in self.参数:
            return self.参数[参数名]
        if 参数名 not in self._模板未用参数名:
            self._模板未用参数名.append(参数名)
        return 默认值

    def 获取元素列表(self):
        元素列表_ = self.元素列表()
        if len(self._模板未用参数名) > 0:
            print("神笔模板 “%s” 未使用参数如下：%s" % (self.模板ID(), ",".join(self._模板未用参数名)))
        return 元素列表_

    def 元素列表(self):
        return []
